#ifndef __EVENTCHANGEPOSITION_HPP__
#define	__EVENTCHANGEPOSITION_HPP__

#include <vector3d.h>
#include "../EventBase.hpp"

namespace Event
{
    class EventChangePosition :
    public EventBase
    {
    protected:
        
		EventChangePosition(float _timeToWait = 0, int _nbFires = 0) :
			EventBase(EVENT_CHANGE_POSITION, _timeToWait, _nbFires),
			m_idToChange(0),
			m_newPosition(0,0,0)
		{
		}
         /**
         * @fn       EventChangePosition(int _idToChange, float _timeToWait = 0, int _nbFires = 0))
         * @brief    Contructor
         * @param    _timeToWait     time we have to wait before firing the event
         * @param    _nbFires        number of time we have to fire the event
         */
        EventChangePosition(int _idToChange, const irr::core::vector3df& _newPos, float _timeToWait = 0, int _nbFires = 0) :
        EventBase(EVENT_CHANGE_POSITION, _timeToWait, _nbFires),
        m_idToChange(_idToChange),
        m_newPosition(_newPos)
        {
        }
    public:
        /**
         * @fn       EventChangePosition(void* _sender, unsigned long _idToChange, float _timeToWait = 0, int _nbFires = 0))
         * @brief    Contructor
         * @param    _timeToWait     time we have to wait before firing the event
         * @param    _nbFires        number of time we have to fire the event
         */
        EventChangePosition(void* _sender, unsigned long _idToChange, const irr::core::vector3df& _newPos, float _timeToWait = 0, int _nbFires = 0) :
        EventBase(_sender, EVENT_CHANGE_POSITION, _timeToWait, _nbFires),
        m_idToChange(_idToChange),
        m_newPosition(_newPos)
        {
        }

        /**
         * @fn       EventChangePosition(const EventChangePosition& orig)
         * @brief    Copy Contructor
         * @param    orig       Copy of the event we have to do
         */
        EventChangePosition(const EventChangePosition& orig) :
        EventBase(orig),
        m_idToChange(orig.m_idToChange),
        m_newPosition(orig.m_newPosition)
        {
        }

        /**
         * @fn       getIdChanged()
         * @brief    Getter on the event
         * @return   event of the keyboard
         */
		unsigned long getIdChanged()
        {
            return m_idToChange;
        }

        /**
         * @fn       getNewPosition()
         * @brief    Getter on the event
         * @return   event of the keyboard
         */
		irr::core::vector3df getNewPosition()
        {
            return m_newPosition;
        }

        /**
         * @fn       ~EventChangePosition()
         * @brief    Virtual Destructor
         */
        virtual ~EventChangePosition()
        {
        }
    protected:
        unsigned long m_idToChange;
        irr::core::vector3df m_newPosition;

    };

} //  namespace Event


#endif	/* __EVENTCHANGEPOSITION_HPP__ */

